<!-- 
  - 数据预处理data-prep-comp。内容为：
  -   1. 零位校正
  -   2. 缩放采零
  -   3. 数据归一化
  - 以组件传参的形式接收
 -->

<!-- 视图层-折叠面板 -->
<template><uni-collapse>

<!-- 数据预处理 -->
<uni-card title="数据预处理">
  <!-- 通告栏 -->
  <uni-notice-bar text=
    "简单的归一化预处理操作，把Y轴数据归一化为[0 ~ 1]之间。"
  />
  <!-- 下拉框容器 -->
  <uni-collapse-item title="下拉查看设置详情">

    <!-- 二级标题：零位校正 -->
    <uni-section
      title="零位校正"
      type="circle"
      padding="0 1em"
    >
      <!-- 文字内容 -->
      <view><text>
        　　类似分析天平的“采零去皮”操作。\n
        　　遍历谱图Y数据，用最小的1%个数据均值作为最小值y(min)，对该谱图数据的所有Y值扣除y(min)。\n
        　　默认“关闭”。
      </text></view>
      <!-- 是否打开 -->
      <view class="center">
        关闭　<switch
          :checked="isMinToZero"
          @change="(event) => {
            isMinToZero = event.detail.value
            changeValueFunc('isMinToZero', event.detail.value)
          }"
          type="switch"
        />　开启
      </view>
    </uni-section>

    <!-- 二级标题：缩放采零。条件渲染，开启零位校正才需要设置这个 -->
    <uni-section
      title="缩放采零"
      type="circle"
      padding="0 1em"
    >
      <!-- 文字内容 -->
      <view><text>
        　　先缩放，再“采零去皮”。\n
        　　当该谱图的y(min)大于0时，先对所有Y值除以y(min)，再减1采零。\n
        　　该项仅在开启“零位校正”后才可设置。\n
        　　默认“关闭”。
      </text></view>
      <!-- 是否打开 -->
      <view class="center">
        关闭　<switch
          :checked="isMinZoom"
          :disabled="!isMinToZero"
          @change="(event) => {
            isMinZoom = event.detail.value
            changeValueFunc('isMinZoom', event.detail.value)
          }"
          type="switch"
        />　开启
      </view>
    </uni-section>

    <!-- 二级标题：归一化 -->
    <uni-section
      title="归一化"
      type="circle"
      padding="0 1em"
    >
      <!-- 文字内容 -->
      <view><text>
        　　遍历谱图Y数据，用最大的1%个数据均值作为最大值y(max)，对该谱图数据的所有Y值除以y(max)。\n
        　　默认“关闭”。
      </text></view>
      <!-- 是否打开 -->
      <view class="center">
        关闭　<switch
          :checked="isMaxToOne"
          @change="(event) => {
            isMaxToOne = event.detail.value
            changeValueFunc('isMaxToOne', event.detail.value)
          }"
          type="switch"
        />　开启
      </view>
    </uni-section>

  </uni-collapse-item>
</uni-card>

</uni-collapse></template>

<!-- 逻辑层 -->
<script setup>
// 导入vue的框架方法
import { defineProps, shallowRef } from "vue"

// 接收组件传参
const props = defineProps({
  // 零位校正
  isMinToZero: {
    type: Boolean,
    default: false
  },
  // 缩放采零
  isMinZoom: {
    type: Boolean,
    default: false
  },
  // 归一化
  isMaxToOne: {
    type: Boolean,
    default: false
  },
  // 修改数据的方法
  changeValueFunc: {
    type: Function,
    default: () => {}
  }
})

/**
 * @ref对象
 * 以传参赋值
 */
const isMinToZero = shallowRef(props.isMinToZero)
const isMinZoom = shallowRef(props.isMinZoom)
const isMaxToOne = shallowRef(props.isMaxToOne)

</script>
